group { name: "elm/gengrid/item/group_index/default";
   inherit: "elm/genlist/item/group_index/default";
}

group { name: "elm/gengrid/item/default/default";
   data.item: "selectraise" "on";
   data.item: "focusraise" "on";
   data.item: "texts" "elm.text";
   data.item: "contents" "elm.swallow.icon elm.swallow.end";
   parts {
//---------------------------------------------------------------------------
#define BASEP() \
   part { name: "event"; type: RECT; \
      description { state: "default" 0.0; \
         color: 0 0 0 0; /* no cc */ \
      } \
      description { state: "disabled" 0.0; \
         inherit: "default" 0.0; \
          visible: 0; \
      } \
   } \
   part { name: "base"; type: RECT; mouse_events: 0; \
      description { state: "default" 0.0; \
         color_class: "/bg/normal/grid/item"; \
      } \
      description { state: "odd" 0.0; \
         color_class: "/bg-alt/normal/grid/item"; \
      } \
   } \
   program { signal: "elm,state,odd"; source: "elm"; \
      action: STATE_SET "odd" 0.0; \
      target: "base"; \
   } \
   program { signal: "elm,state,even"; source: "elm"; \
      action: STATE_SET "default" 0.0; \
      target: "base"; \
   } \
   part { name: "sel_base"; type: RECT; mouse_events: 0; \
      description { state: "default" 0.0; \
         color_class: "/bg/selected/grid/item"; \
         visible: 0; \
      } \
      description { state: "selected" 0.0; \
         inherit: "default" 0.0; \
         visible: 1; \
      } \
   } \
   program { signal: "elm,state,selected"; source: "elm"; \
      action: STATE_SET "selected" 0.0; \
      target: "sel_base"; \
   } \
   program { signal: "elm,state,unselected"; source: "elm"; \
      action: STATE_SET "default" 0.0; \
      target: "sel_base"; \
   } \
   program { signal: "elm,state,disabled"; source: "elm"; \
       action: STATE_SET "disabled" 0.0; \
       target: "event"; \
   } \
   program { signal: "elm,state,enabled"; source: "elm"; \
      action: STATE_SET "default" 0.0; \
      target: "event"; \
   }
#define TOPP() \
   part { name: "event_block"; type: RECT; \
      description { state: "default" 0.0; \
         color: 0 0 0 0; /* no cc */ \
         visible: 0; \
      } \
      description { state: "disabled" 0.0; \
         inherit: "default" 0.0; \
         visible: 1; \
      } \
   } \
   program { signal: "elm,state,disabled"; source: "elm"; \
      action: STATE_SET "disabled" 0.0; \
      target: "event_block"; \
   } \
   program { signal: "elm,state,enabled"; source: "elm"; \
       action: STATE_SET "default" 0.0; \
       target: "event_block"; \
   }
//---------------------------------------------------------------------------
      BASEP()

      //##//
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            rel1.relative: 0.0 1.0;
            rel1.offset: 4 -5;
            rel2.offset: -5 -5;
            color_class: "/fg/normal/grid/item";
            align: 0.5 1.0;
            offscale;
            text { font: FN; size: 10;
               min: 0 1;
               align: 0.5 1.0;
               text_class: "grid_item";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/grid/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/grid/item";
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      //##//
      part { name: "icon_area"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.offset: 4 4;
            rel2.to_y: "elm.swallow.pad";
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 -5;
            color: 255 255 255 255; // no cc
            offscale;
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
         }
      }
      part { name: "elm.swallow.pad"; type: SWALLOW;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            align: 0.0 1.0;
            rel1.to_y: "elm.text";
            rel2.offset: 0 0;
            rel2.to_y: "elm.text";
            rel2.relative: 1.0 0.0;
            rel2.offset: -1 0;
            offscale;
         }
      }
      part { name: "elm.swallow.icon"; type: SWALLOW;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel.to: "icon_area";
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale: 1;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            min: ICMIN ICMIN;
            align: 1.0 0.0;
            rel.to: "icon_area";
            rel1.relative: 1.0 0.0;
            rel1.offset: -5 4;
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 4;
            offscale;
         }
      }
      //##//

      TOPP()
   }
}

group { name: "elm/gengrid/item/default_style/default";
   data.item: "selectraise" "on";
   data.item: "focusraise" "on";
   data.item: "texts" "elm.text";
   data.item: "contents" "elm.swallow.icon elm.swallow.end";
   styles.style {    name: "gengrid_style";
      base: "font="FN" font_size=10 align=left color=cc:/fg/normal/list/item text_class=list_item ellipsis=1.0";
      tag: "br" "\n";
      tag: "ps" "ps";
      tag: "hilight" "+ font_weight=Bold";
      tag: "b" "+ font_weight=Bold";
      tag: "tab" "\t";
   }
   styles.style { name: "gengrid_style_selected";
      base: "font="FN" font_size=10 align=left color=cc:/fg/selected/list/item text_class=list_item_selected ellipsis=1.0";
      tag: "br" "\n";
      tag: "ps" "ps";
      tag: "hilight" "+ font_weight=Bold";
      tag: "b" "+ font_weight=Bold";
      tag: "tab" "\t";
   }
   styles.style { name: "gengrid_style_disabled";
      base: "font="FN" font_size=10 align=left color=cc:/fg/disabled/list/item text_class=list_item ellipsis=1.0";
      tag: "br" "\n";
      tag: "ps" "ps";
      tag: "hilight" "+ font_weight=Bold";
      tag: "b" "+ font_weight=Bold";
      tag: "tab" "\t";
   }

   parts {
      BASEP()

      //##//
      part { name: "elm.text"; type: TEXTBLOCK; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            rel1.relative: 0.0 1.0;
            rel1.offset: 4 -5;
            rel2.relative: 1.0 1.0;
            rel2.offset: -5 -5;
            align: 0.5 1.0;
            offscale;
            text {
               min: 0 1;
               align: 0.5 1.0;
               text_class: "grid_item";
               style: "gengrid_style";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            text.style: "gengrid_style_selected";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            text.style: "gengrid_style_disabled";
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      //##//
      part { name: "icon_area"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.offset: 4 4;
            rel2.to_y: "elm.swallow.pad";
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 -5;
            offscale;
            color: 255 255 255 255; // no cc
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
         }
      }
      part { name: "elm.swallow.pad"; type: SWALLOW;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            align: 0.0 1.0;
            rel1.to_y: "elm.text";
            rel2.offset: 0 0;
            rel2.to_y: "elm.text";
            rel2.relative: 1.0 0.0;
            rel2.offset: -1 0;
            offscale;
         }
      }
      part { name: "elm.swallow.icon"; type: SWALLOW;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel.to: "icon_area";
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale: 1;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            min: ICMIN ICMIN;
            align: 1.0 0.0;
            rel.to: "icon_area";
            rel1.relative: 1.0 0.0;
            rel1.offset: -5 4;
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 4;
            offscale;
         }
      }
      //##//

      TOPP()
   }
}

#define IC(_NAME, _ICON) \
   set { name: _NAME; \
      image {image: _ICON"-060.png" COMP; size: 31 31 60000 60000; } \
      image {image: _ICON"-030.png" COMP; size: 16 16    30    30; } \
      image {image: _ICON"-015.png" COMP; size:  0  0    15    15; } \
   }
IC("ic-arrow-u", "arrow-u")
#undef IC

group { name: "elm/gengrid/item/up/default";
   inherit: "elm/gengrid/item/default/default";
   parts {
      part { name: "icon_area"; type: RECT;
         description { state: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "up";
         insert_after: "elm.swallow.pad";
         scale: 1;
         description { state: "default" 0.0;
            min: 30 30; max: 30 30;
            aspect: 1.0 1.0; aspect_preference: BOTH;
            rel.to: "icon_area";
            image.normal: "ic-arrow-u";
            color_class: "/fg/normal/grid/item";
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/grid/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/grid/item";
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "up";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "up";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "up";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "up";
      }
   }
}

group { name: "elm/gengrid/item/album-preview/default";
   data.item: "selectraise" "on";
   data.item: "focusraise" "on";
   data.item: "texts" "elm.text";
   data.item: "contents" "elm.swallow.icon.1 elm.swallow.icon.2 elm.swallow.icon.3 elm.swallow.icon.4";
   data.item: "states" "have_files";

   parts {
      BASEP()

      //##//
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            rel1.relative: 0.0 1.0;
            rel1.offset: 4 -5;
            rel2.offset: -5 -5;
            color_class: "/fg/normal/grid/item";
            align: 0.5 1.0;
            offscale;
            text { font: FN; size: 10;
               min: 0 1;
               align: 0.5 1.0;
               text_class: "grid_item";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/grid/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/grid/item";
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      //##//
      part { name: "icon_area"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.offset: 4 4;
            rel2.to_y: "elm.swallow.pad";
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 -5;
            offscale;
            color: 255 255 255 255; // no cc
            visible: 0;
         }
         description { state: "visible" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 255; // no cc
            visible: 1;
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
            visible: 1;
         }
      }
      program { signal: "elm,state,have_files,active"; source: "elm";
         action: STATE_SET "visible" 0.0;
         target: "icon_area";
      }
      part { name: "elm.swallow.pad"; type: SWALLOW;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            align: 0.0 1.0;
            rel1.to_y: "elm.text";
            rel2.offset: 0 0;
            rel2.to_y: "elm.text";
            rel2.relative: 1.0 0.0;
            rel2.offset: -1 0;
            offscale;
         }
      }
      part { name: "icon_area2"; type: SPACER;
         description { state: "default" 0.0;
            rel.to: "icon_area";
            rel1.relative: 0.3  0.3;
            rel2.relative: 0.7  0.7;
         }
      }
      part { name: "folder";
         insert_after: "elm.swallow.pad";
         description { state: "default" 0.0;
            aspect: 1.0 1.0; aspect_preference: BOTH;
            rel.to: "icon_area";
            image.normal: "i-folder";
         }
      }
      part { name: "elm.swallow.icon.1"; type: SWALLOW; mouse_events: 0;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel1.to: "icon_area2";
            rel1.relative: 0.0  0.0;
            rel2.to: "icon_area2";
            rel2.relative: 0.5  0.5;
         }
      }
      part { name: "elm.swallow.icon.2"; type: SWALLOW; mouse_events: 0;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel1.to: "icon_area2";
            rel1.relative: 0.5  0.0;
            rel2.to: "icon_area2";
            rel2.relative: 1.0  0.5;
         }
      }
      part { name: "elm.swallow.icon.3"; type: SWALLOW; mouse_events: 0;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel1.to: "icon_area2";
            rel1.relative: 0.0  0.5;
            rel2.to: "icon_area2";
            rel2.relative: 0.5  1.0;
         }
      }
      part { name: "elm.swallow.icon.4"; type: SWALLOW; mouse_events: 0;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel1.to: "icon_area2";
            rel1.relative: 0.5  0.5;
            rel2.to: "icon_area2";
            rel2.relative: 1.0  1.0;
         }
      }
      part { name: "elm.swallow.icon"; type: SWALLOW;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel.to: "icon_area";
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale: 1;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            min: ICMIN ICMIN;
            align: 1.0 0.0;
            rel.to: "icon_area";
            rel1.relative: 1.0 0.0;
            rel1.offset: -5 4;
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 4;
            offscale;
         }
      }
      //##//

      TOPP()
   }
}

group { name: "elm/gengrid/item/thumb/default";
   data.item: "selectraise" "on";
   data.item: "focusraise" "on";
   data.item: "texts" "elm.text";
   data.item: "contents" "elm.swallow.icon elm.swallow.end";
   parts {
      part { name: "base"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel.to: "icon_area";
            rel1.offset: -4 -4;
            rel2.offset: 4 4;
            rel2.to: "icon_area";
            color_class: "/bg/normal/grid/item/thumb";
            offscale;
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/bg/selected/grid/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      part { name: "base2"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.relative: 0.0 1.0;
            color_class: "/bg/selected/grid/item";
            offscale;
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            rel1.to_y: "base";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            visible: 0;
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "base";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "base";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "base";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "base";
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         transition: DECELERATE 0.2;
         target: "base2";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         transition: DECELERATE 0.2;
         target: "base2";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "base2";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "base2";
      }

      //##//
      part { name: "elm.text"; type: TEXT; mouse_events: 0;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            rel1.relative: 0.0 1.0;
            rel1.offset: 4 -5;
            rel2.offset: -5 -5;
            color_class: "/fg/normal/grid/item";
            align: 0.5 1.0;
            offscale;
            text { font: FN; size: 10;
               min: 0 1;
               align: 0.5 1.0;
               text_class: "grid_item";
            }
         }
         description { state: "selected" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/selected/grid/item";
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color_class: "/fg/disabled/grid/item";
         }
      }
      program { signal: "elm,state,selected"; source: "elm";
         action: STATE_SET "selected" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,unselected"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
      }
      program { signal: "elm,state,disabled"; source: "elm";
         action: STATE_SET "disabled" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      program { signal: "elm,state,enabled"; source: "elm";
         action: STATE_SET "default" 0.0;
         target: "elm.text";
         target: "icon_area";
      }
      //##//
      part { name: "icon_area"; type: RECT;
         scale: 1;
         description { state: "default" 0.0;
            rel1.offset: 8 8;
            rel2.to_y: "elm.swallow.pad";
            rel2.relative: 1.0 0.0;
            rel2.offset: -9 -9;
            offscale;
            color: 255 255 255 255; // no cc
         }
         description { state: "disabled" 0.0;
            inherit: "default" 0.0;
            color: 255 255 255 64; // no cc
         }
      }
      part { name: "elm.swallow.pad"; type: SWALLOW;
         scale: 1;
         description { state: "default" 0.0;
            fixed: 0 1;
            align: 0.0 1.0;
            rel1.to_y: "elm.text";
            rel2.offset: 0 0;
            rel2.to_y: "elm.text";
            rel2.relative: 1.0 0.0;
            rel2.offset: -1 0;
            offscale;
         }
      }
      part { name: "elm.swallow.icon"; type: SWALLOW;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            rel.to: "icon_area";
         }
      }
      part { name: "elm.swallow.end"; type: SWALLOW;
         scale: 1;
         clip_to: "icon_area";
         description { state: "default" 0.0;
            min: ICMIN ICMIN;
            align: 1.0 0.0;
            rel.to: "icon_area";
            rel1.relative: 1.0 0.0;
            rel1.offset: -5 4;
            rel2.relative: 1.0 0.0;
            rel2.offset: -5 4;
            offscale;
         }
      }
   }
}
#undef BASEP
#undef TOPP
